/**
 * 减法:字符串,整数|小数>=0
 * @param a string 被减数  正数>=0
 * @param b string 减数    正数>=0
 * @return string
 */
$.bcSubDot = function(a, b){
	function SPT(v){
		let [i,d]=v.split('.'); i=i.replace(/^0+/,'');
		return [i, d ? d.replace(/0+$/,'') : ''];
	}
	function RE0(n){ return new Array(n+1).join('0'); }
	$.bcSubDot = function(a, b){
		let [ai,ad]=SPT(a), [bi,bd]=SPT(b), _='', d='', x=0;
		let AI=ai.length, BI=bi.length, AD=ad.length, BD=bd.length;
		if(AI!==BI) AI<BI ? ai=RE0(BI-AI)+ai : bi=RE0(AI-BI)+bi;
		if(AD!==BD) AD<BD ? ad=ad+RE0(BD-AD) : bd=bd+RE0(AD-BD);
		let A=ai+ad, B=bi+bd;  if(A===B) return '0';
		if(A<B){ _=ai; ai=bi; bi=_; _=ad; ad=bd; bd=_; _='-'; }
		if(ad!==bd){ [d,x]=$.bcSubLen(ad,bd); d=d.replace(/0+$/,''); }
		d=d?'.'+d:'';  if(ai===bi) return _+'0'+d;
		return _+$.bcSubLen(ai,bi,x)[0].replace(/^0+/,'')+d;
	};
	return $.bcSubDot(a, b);
};
